//定义校验规则
//导入@hapi/joi,这个包用于填写数据项的检验
const joi=require("joi")

//填写验证规则
/**
* string() 值必须是字符串
* alphanum() 值只能是包含 a-zA-Z0-9 的字符串
* min(length) 最小长度
* max(length) 最大长度
* required() 值是必填项，不能为 undefined
* pattern(正则表达式) 值必须符合正则表达式的规则
*/

const username=joi.string().alphanum().min(3).max(12).required()
const password=joi.string().pattern(/^[\S]{6,12}$/).required()

module.exports.user_schema={
    body:{
        username,
        password
    }
}

//定义更改用户信息的表单验证规则
const id=joi.number().integer().min(1).required()
const nickname=joi.string().required()
const email=joi.string().email().required()

module.exports.update_userinfo_schema={
    body:{
        id,
        nickname,
        email
    }
}

//导出密码校验
module.exports.update_pwd_schema={
    body:{
        oldPwd:password,
        // 使用 joi.not(joi.ref('oldPwd')).concat(password) 规则，验证 req.body.newPwd 的值
        // 解读：
        // 1. joi.ref('oldPwd') 表示 newPwd 的值必须和 oldPwd 的值保持一致
        // 2. joi.not(joi.ref('oldPwd')) 表示 newPwd 的值不能等于 oldPwd 的值
        // 3. .concat() 用于合并 joi.not(joi.ref('oldPwd')) 和 password 这两条验证规则
        newPwd:joi.not(joi.ref('oldPwd')).concat(password)
    }
}

//用户头像验证
const avatar=joi.string().dataUri().required()
//导出头像验证
module.exports.update_avatar_schema={
    body:{
        avatar
    }
}